package com.shnu.work.service;

import com.shnu.work.entity.UserDataWhileUsingEntity;

import java.util.List;

/**
 * @author Shinomiya Kaguya
 */
public interface IUserDataWhileUsingService {
    /**
     * 根据userId查到所有结果
     *
     * @param userId userId
     * @return 所有结果
     */
    List<UserDataWhileUsingEntity> listUserDataWhileUsingEntitiesByUserId(Long userId);

    /**
     * 保存一条记录
     *
     * @param userDataWhileUsingEntity UserDataWhileUsingEntity
     * @return UserDataWhileUsingEntity
     */
    UserDataWhileUsingEntity save(UserDataWhileUsingEntity userDataWhileUsingEntity);

    /**
     * 查找未删除的结果
     *
     * @return 结果list
     */
    List<UserDataWhileUsingEntity> listAllUndeleted();

    /**
     * 根据设备id查询
     *
     * @param deviceId 设备id
     * @return 结果
     */
    List<UserDataWhileUsingEntity> listUserDataByDeviceId(Long deviceId);


    /**
     * 根据时间戳查询
     *
     * @param userDocumentTime 时间戳
     * @return 结果
     */
    List<UserDataWhileUsingEntity> listUserDataByUserDocumentTime(String userDocumentTime);

    /**
     * 根据时间戳和设备id查询
     *
     * @param deviceId         设备id
     * @param userDocumentTime 时间戳
     * @return 结果
     */
    List<UserDataWhileUsingEntity> listUserDataByDeviceIdAndUserDocumentTime(Long deviceId, String userDocumentTime);

    /**
     * 根据时间戳和设备id查询
     *
     * @param userDocumentTime 时间戳
     * @param deviceId         设备id
     * @return 行数
     */
    Integer removeUserDataByUserDocumentTimeAndUserName(String userDocumentTime, Long deviceId);

    /**
     * 根据用户id和设备id查询
     *
     * @param deviceId 设备id
     * @param userId   用户id
     * @return List<UserDataWhileUsingEntity>
     */
    List<UserDataWhileUsingEntity> listUserDataByDeviceIdAndUserId(Long deviceId, Long userId);

    /**
     * 根据时间戳和用户id查询
     *
     * @param userDocumentTime
     * @param userId
     * @return
     */
    List<UserDataWhileUsingEntity> listUserDataByUserDocumentTimeAndUserId(String userDocumentTime, Long userId);

    /**
     * 根据时间戳和设备id和用户id查询
     *
     * @param deviceId         设备id
     * @param userDocumentTime 时间戳
     * @return 结果
     */
    List<UserDataWhileUsingEntity> listUserDataByDeviceIdAndUserDocumentTimeAndUserId(Long deviceId, String userDocumentTime, Long userId);
}
